#include "Delay.h"

extern uint32_t SystemCoreClock;

void SysTick_Init(void)
{
    SysTick->LOAD = SystemCoreClock / 1000 - 1; // 1ms 中断
    SysTick->VAL = 0;
    // 配置 SysTick 控制寄存器
    SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | // 使用处理器时钟
                    SysTick_CTRL_ENABLE_Msk |    // 使能 SysTick 定时器
                    SysTick_CTRL_TICKINT_Msk;    // 使能 SysTick 中断
}

volatile uint32_t ticks = 0; // 用于记录 SysTick 中断次数

void SysTick_Handler(void)
{
    ticks++; // 每次中断增加 ticks
}

void Delay(uint32_t ms)
{
    uint32_t start = ticks;
    while ((ticks - start) < ms)
        ; // 等待指定的毫秒数
}

void Delay2(uint32_t dlyTicks)
{
    __IO uint32_t Delay = dlyTicks * (SystemCoreClock / 8 / 1000U);
    do
    {
        __NOP();
    } while (Delay--);
}